public class Main {
    public static void main(String[] args) {
        Solution solution = new Solution();

    }
}


class ListNode {
    int val;
    ListNode next;
    ListNode() {}
    ListNode(int val) { this.val = val; }
    ListNode(int val, ListNode next) { this.val = val; this.next = next; }
}

//二刷
class Solution {

    ListNode swap(ListNode cur) {
        if (cur == null || cur.next == null) {
            return cur;
        }
        ListNode next = cur.next;
        cur.next = next.next;
        next.next = cur;
        return next;
    }

    public ListNode swapPairs(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        ListNode fakeHead = new ListNode(0, head);
        ListNode parent = fakeHead;
        while (parent != null && parent.next != null) {
            parent.next = swap(parent.next);
            parent = parent.next.next;
        }
        return fakeHead.next;
    }
}


//class Solution {
//    public ListNode swapPairs(ListNode head) {
//        if(head == null){
//            return null;
//        }
//        ListNode nummy = new ListNode(0, head);
//        ListNode node = nummy;
//        while(node.next != null && node.next.next != null){
//            swap(node, node.next, node.next.next, node.next.next.next);
//            node = node.next.next;
//        }
//        return nummy.next;
//    }
//
//    void swap(ListNode prev, ListNode left, ListNode right, ListNode next){
//        prev.next = right;
//        right.next = left;
//        left.next = next;
//    }
//}